title: 148.Bret Victor – Learnable Programming outline: deep

大家是否还记得之前酷壳向大家介绍的苹果设计师Bret Victor一种可视编程的视频《Bret Victor – Inventing on Principle》,最近,他写了一篇文章—— Learnable Programming,写这篇文章的原因是因为“可汗学院(Khan Academy)”近期上线的一个在线编程环境,根据他的演讲提供了一堆基于Javascript的“实时编程”的环境,因为这个环境是引用了他的想法,所以,他有必要出来喷两句。

这篇文章的开头就是一个问题——“How do we get people to understand programming?”,我们怎么让人们懂得编程?

然后,他说了两条——

所以,Bret 觉得编程软件的目标是——

他说,可汗学院的“实时编程环境”并没有达到上面的任何一个目标。他还说用Javascript这样设计得很垃圾的语言根本不能支持强大的思考,而且还忽略了近十年来的成果,可汗学院这些东西完全是毫无价值的。

Bret认为,Alan Perlis的名言——“要学会编程,你必需得同时变成机器和程序”是错误的,这句被广为流传的错误名言,让我们把编程变成很难,并且掩盖了编程的艺术。人并不是一台机器,我们也不应该强迫自己变成那样。

接下来,他说明了一个编程系统应该有两个部分——

他随笔给出来了一些Design Principles——

对于“编程环境”,应该能让学习者干下面的事:

对于“编程语言” 来说,它应该提供下面的事:

然后,他说“The Features are not the point”,我们很多时候会关注编程环境和编程语言提供的功能,这就好像我们在看一本书有哪些单词一样,有哪些单词不重要,重要的是我这些单词组合起来传达了一个什么信息一个设计的好的系统并不是一堆功能,一个设计得好的编程环境是激发特定的思考方式。所有的功能都是非常小心翼翼地组合起来为之服务。(不好意思,我又要插一句。我觉得这和我在《抄袭,腾讯和产品》一文中,我所理解的“什么是真正的产品”有点类似——真正的产品不是功能的组合,而是要表达的价值和对某一特定问题端到端的解决方案)

接下来,Bret用大量的示例告诉了大家上面所说的那几条是具体是什么。大家一定要去读一读!(我把这些东西总结果在上面的那些条目中了)

最后,Bret说了一下,他被问过很多次——这些漂亮的想法怎么应用到现实世界中?他说这个问题问的是对的,但是这些问题问的就好像是——“怎么能让一匹马从内燃机引擎受益”一样,其假设的改变是错误的。他回答到,更准确的是——“Programming has to work like this”,所以他说,他的这些东西不是一种“Training”,也不是一种“银弹”,只不过是拿开了眼罩。

**更新:**一楼回复的朋友给了一个中译版的链接:http://chengyichao.info/learnable-programming/

(全文完)